home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / Image.be.ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  7.8 KB  |  238 lines

  1. // GETINFO SCRIPTING
  2. // image Mediastores (image.be) import
  3.  
  4. (***************************************************
  5.  *  Movie importation script for:                  *
  6.  *      image Mediastores, http://www.image.be     *
  7.  *                                                 *
  8.  *  (c) 2003 Antoine Potten    software@antp.be    *
  9.  *                                                 *
  10.  *  For use with Ant Movie Catalog 3.4.2           *
  11.  *  www.antp.be/software/moviecatalog              *
  12.  *                                                 *
  13.  *  This program is free software; you can         *
  14.  *  redistribute it and/or modify it under the     *
  15.  *  terms of the GNU General Public License as     *
  16.  *  published by the Free Software Foundation;     *
  17.  *  either version 2 of the License, or (at your   *
  18.  *  option) any later version.                     *
  19.  ***************************************************)
  20.  
  21. program ImageBe;
  22.  
  23. const
  24.   LargePicture = False; // set it to True to import large picture
  25.  
  26. var
  27.   MovieName: string;
  28.  
  29. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  30. var
  31.   i: Integer;
  32. begin
  33.   result := -1;
  34.   if StartAt < 0 then
  35.     StartAt := 0;
  36.   for i := StartAt to List.Count-1 do
  37.     if Pos(Pattern, List.GetString(i)) <> 0 then
  38.     begin
  39.       result := i;
  40.       Break;
  41.     end;
  42. end;
  43.  
  44. procedure AnalyzePage(Address: string);
  45. var
  46.   Page, Line: string;
  47.   BeginPos, EndPos, MovCount: Integer;
  48. begin
  49.   Page := GetPage(Address);
  50.   BeginPos := Pos('Aucun rΘsultat trouvΘ', Page);
  51.   if BeginPos > 0 then
  52.   begin
  53.     ShowMessage('No movie found');
  54.     Exit;
  55.   end;
  56.   BeginPos := Pos('<u>Objet de votre recherche</u>', Page);
  57.   EndPos := Pos('<table width="92%"', Page);
  58.   if (BeginPos > 0) and (EndPos > 0) then
  59.   begin
  60.     PickTreeClear;
  61.     Page := Copy(Page, BeginPos, EndPos - BeginPos);
  62.     EndPos := Pos('<table', Page);
  63.     Line := Copy(Page, 1, EndPos-1);
  64.     HTMLRemoveTags(Line);
  65.     HTMLDecode(Line);
  66.     PickTreeAdd(Line, '');
  67.     MovCount := 0;
  68.     repeat
  69.       BeginPos := Pos('<a href=''FicheFilmSY.asp', Page);
  70.       if BeginPos > 0 then
  71.       begin
  72.         Delete(Page, 1, BeginPos-1);
  73.         EndPos := Pos(''' class', Page);
  74.         Address := 'http://www.image.be/' + Copy(Page, 10, EndPos - 10);
  75.         Delete(Page, 1, EndPos+14);
  76.         EndPos := Pos('<br>', Page);
  77.         Line := Copy(Page, 1, EndPos-1);
  78.         HTMLRemoveTags(Line);
  79.         PickTreeAdd(Line, Address);
  80.         MovCount := MovCount+1;
  81.       end;
  82.     until BeginPos = 0;
  83.     if (MovCount = 1) then
  84.       AnalyzeMoviePage(Address)
  85.     else
  86.      if PickTreeExec(Address) then
  87.        AnalyzeMoviePage(Address);
  88.   end;
  89. end;
  90.  
  91. procedure AnalyzeMoviePage(Address: string);
  92. var
  93.   Line, Value: string;
  94.   BeginPos, EndPos, LineNr, IntValue: Integer;
  95.   Page: TStringList;
  96. begin
  97.   Page := TStringList.Create;
  98.   Line := GetPage(Address);
  99.   BeginPos := Pos('<table cellspacing="6" cellpadding="0" border="0">', Line);
  100.   EndPos := Pos('<table border="0" cellspacing="0" cellpadding="0" width="90%">', Line);
  101.   if (BeginPos > 0) and (EndPos > 0) then
  102.   begin
  103.     Page.Text := Copy(Line, BeginPos, EndPos - BeginPos);
  104.     Line := Trim(Page.GetString(1));
  105.     BeginPos := Pos('4>', Line)+2;
  106.     EndPos := Pos('</font>', Line);
  107.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  108.     if Pos('class=yellowlight2', Line) > 0 then
  109.     begin
  110.       SetField(fieldTranslatedTitle, Value);
  111.       Delete(Line, 1, EndPos);
  112.       BeginPos := Pos('<i> (', Line) + 5;
  113.       EndPos := Pos(')</i>', Line);
  114.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  115.       SetField(fieldOriginalTitle, Value);
  116.       Delete(Line, 1, EndPos);
  117.     end
  118.     else
  119.     begin
  120.       SetField(fieldOriginalTitle, Value);
  121.       Delete(Line, 1, EndPos);
  122.     end;
  123.     BeginPos := Pos('<i>(', Line) + 4;
  124.     Delete(Line, 1, BeginPos-1);
  125.     EndPos := Pos(')</i>', Line);
  126.     Value := Copy(Line, 1, EndPos-1);
  127.     SetField(fieldYear, Value);
  128.     LineNr := FindLine('<img src="Movies/', Page, 0);
  129.     if LineNr > -1 then
  130.     begin
  131.       Line := Page.GetString(LineNr);
  132.       BeginPos := Pos('<img src=', Line)+10;
  133.       EndPos := Pos('" border=', Line);
  134.       Value := 'http://www.image.be/' + Copy(Line, BeginPos, EndPos - BeginPos);
  135.       if LargePicture then
  136.         Value := StringReplace(Value, '/jm.', '/jh.');
  137.       GetPicture(Value, False);
  138.     end;
  139.     LineNr := FindLine('<b>Genres:', Page, LineNr);
  140.     if LineNr = -1 then
  141.       LineNr := FindLine('<b>Genre:', Page, LineNr);
  142.     if LineNr > -1 then
  143.     begin
  144.       Line := Page.GetString(LineNr);
  145.       BeginPos := Pos('</b>', Line);
  146.       EndPos := Pos('<font class=white2>', Line);
  147.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  148.       HTMLRemoveTags(Value);
  149.       SetField(fieldCategory, Value);
  150.     end;
  151.     LineNr := FindLine('<b>Durée:', Page, LineNr);
  152.     if LineNr > -1 then
  153.     begin
  154.       Line := Trim(Page.GetString(LineNr+2));
  155.       EndPos := Pos(' ', Line);
  156.       Value := Copy(Line, 1, EndPos-1);
  157.       SetField(fieldLength, Value);
  158.     end;
  159.     LineNr := FindLine('<b>Studio:', Page, LineNr);
  160.     if LineNr = 0 then
  161.       LineNr := FindLine('<b>Studios:', Page, LineNr);
  162.     if LineNr > -1 then
  163.     begin
  164.       Line := Trim(Page.GetString(LineNr));
  165.       BeginPos := Pos('">', Line) + 2;
  166.       Value := Copy(Line, BeginPos, Length(Line));
  167.       SetField(fieldProducer, Value);
  168.     end;
  169.     LineNr := FindLine('<b>RΘalisateur:', Page, LineNr);
  170.     if LineNr = -1 then
  171.       LineNr := FindLine('<b>RΘalisateurs:', Page, LineNr);
  172.     if LineNr > -1 then
  173.     begin
  174.       Line := Page.GetString(LineNr);
  175.       BeginPos := Pos('<font', Line);
  176.       Value := Copy(Line, BeginPos, Length(Line));
  177.       HTMLRemoveTags(Value);
  178.       SetField(fieldDirector, Trim(Value));
  179.     end;
  180.     LineNr := FindLine('<b>Avec:', Page, LineNr);
  181.     if LineNr = -1 then
  182.       LineNr := FindLine('<b>Avec les voix de:', Page, LineNr);
  183.     if LineNr > -1 then
  184.     begin
  185.       Line := Page.GetString(LineNr);
  186.       BeginPos := Pos('</b>', Line);
  187.       Value := Copy(Line, BeginPos, Length(Line));
  188.       HTMLRemoveTags(Value);
  189.       HTMLDecode(Value);
  190.       SetField(fieldActors, Trim(Value));
  191.     end;
  192.     LineNr := FindLine('<div align="justify">', Page, LineNr);
  193.     if LineNr > -1 then
  194.     begin
  195.       Value := '';
  196.       repeat
  197.         Line := Page.GetString(LineNr);
  198.         LineNr := LineNr+1;
  199.         BeginPos := Pos('</div>', Line);
  200.         HTMLRemoveTags(Line);
  201.         Value := Value + Trim(Line) + #13#10;
  202.       until BeginPos <> 0;
  203.       Value := StringReplace(Value, '£', 'oe');
  204.       Value := StringReplace(Value, 'à', '...');
  205.       SetField(fieldDescription, Value);
  206.     end;
  207.     LineNr := FindLine('<td width="145" valign="middle"><font class=black2>', Page, LineNr);
  208.     if LineNr > -1 then
  209.     begin
  210.       Line := Page.GetString(LineNr);
  211.       BeginPos := Pos('0000">', Line) + 6;
  212.       EndPos := Pos('</font>', Line);
  213.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  214.       IntValue := StrToInt(StrGet(Value, 1), 0) * 2;
  215.       if Length(Value) > 2 then
  216.         if StrToInt(StrGet(Value, 3), 0) >= 5 then
  217.           IntValue := IntValue + 1;
  218.       SetField(fieldRating, IntToStr(IntValue));
  219.     end;
  220.   end;
  221.   Page.Free;
  222.   DisplayResults;
  223. end;
  224.  
  225. begin
  226.   if CheckVersion(3,4,2) then
  227.   begin
  228.     MovieName := GetField(fieldOriginalTitle);
  229.     if MovieName = '' then
  230.       MovieName := GetField(fieldTranslatedTitle);
  231.     if Input('image.be import', 'Entrez le titre du film :', MovieName) then
  232.     begin
  233.       AnalyzePage('http://www.image.be/rΘsultats.asp?recherche=' + UrlEncode(MovieName) + '&Type=Film');
  234.     end;
  235.   end else
  236.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.2)');
  237. end.
  238.